package net.yla.smartbus.core.util;

/**
 * @Author : 默苍离
 * @Create_Date : 2020/08/11/15:04
 * @Pack_name : org.jgs1904 : MyByteUnit
 * *****************************************************
 * 注释:友好表示字节大小
 */
public class ByteUnit {

    // 字节单位的大小。
    public static final long KB = 1024;
    public static final long MB = KB * 1024;
    public static final long GB = MB * 1024;
    public static final long TB = GB * 1024;
    public static final long PB = TB * 1024;
    public static final long EB = PB * 1024;

    public final static ByteUnit defaultUnit = new ByteUnit();

    String b;
    String kb;
    String mb;
    String gb;
    String tb;
    String pb;
    String eb;


    public ByteUnit() {

        this.b = "";
        this.kb = "KB";
        this.mb = "MB";
        this.gb = "GB";
        this.tb = "TB";
        this.pb = "PB";
        this.eb = "EB";
    }

    public ByteUnit(String b, String kb, String mb) {

        this.b = b;
        this.kb = kb;
        this.mb = mb;

    }

    public ByteUnit(String b, String kb, String mb, String gb, String tb, String pb, String eb) {
        this.b = b;
        this.kb = kb;
        this.mb = mb;
        this.gb = gb;
        this.tb = tb;
        this.pb = pb;
        this.eb = eb;

    }


    public static String toString(long value) {

        String s = "";
        long e = value / EB;
        long p = value / PB % 1024;
        long t = value / TB % 1024;
        long g = value / GB % 1024;
        long m = value / MB % 1024;
        long k = value / KB % 1024;
        long b = value % 1024;

        if (k == 0 && m == 0 && g == 0 && t == 0 && p == 0 && e == 0) {
            s = b + "";
        } else if (m == 0 && g == 0 && t == 0 && p == 0 && e == 0) {
            s = k + defaultUnit.kb + "   " + b;
        } else if (g == 0 && t == 0 && p == 0 && e == 0) {
            s = m + defaultUnit.mb + "   " + k + defaultUnit.kb + "   " + b;
        } else if (t == 0 && p == 0 && e == 0) {
            s = g + defaultUnit.gb + "   " + m + defaultUnit.mb + "   " + k + defaultUnit.kb + "   " + b;
        } else if (p == 0 && e == 0) {
            s = t + defaultUnit.tb + "   " + g + defaultUnit.gb + "   " + m + defaultUnit.mb + "   " + k + defaultUnit.kb + "   " + b;
        } else if (e == 0) {
            s = p + defaultUnit.pb + "   " + t + defaultUnit.tb + "   " + g + defaultUnit.gb + "   " + m + defaultUnit.mb + "   " + k + defaultUnit.kb + "   " + b;
        } else {
            s = e + defaultUnit.eb + "   " + p + defaultUnit.pb + "   " + t + defaultUnit.tb + "   " + g + defaultUnit.gb + "   " + m + defaultUnit.mb + "   " + k + defaultUnit.kb + "   " + b;
        }

        return s;

    }

    public static String toString(long value, ByteUnit unit) {

        String s = "";
        long e = value / EB;
        long p = value / PB % 1024;
        long t = value / TB % 1024;
        long g = value / GB % 1024;
        long m = value / MB % 1024;
        long k = value / KB % 1024;
        long b = value % 1024;

        if (k == 0 && m == 0 && g == 0 && t == 0 && p == 0 && e == 0) {
            s = b + "";
        } else if (m == 0 && g == 0 && t == 0 && p == 0 && e == 0) {
            s = k + unit.kb + "   " + b;
        } else if (g == 0 && t == 0 && p == 0 && e == 0) {
            s = m + unit.mb + "   " + k + unit.kb + "   " + b;
        } else if (t == 0 && p == 0 && e == 0) {
            s = g + unit.gb + "   " + m + unit.mb + "   " + k + unit.kb + "   " + b;
        } else if (p == 0 && e == 0) {
            s = t + unit.tb + "   " + g + unit.gb + "   " + m + unit.mb + "   " + k + unit.kb + "   " + b;
        } else if (e == 0) {
            s = p + unit.pb + "   " + t + unit.tb + "   " + g + unit.gb + "   " + m + unit.mb + "   " + k + unit.kb + "   " + b;
        } else {
            s = e + unit.eb + "   " + p + unit.pb + "   " + t + unit.tb + "   " + g + unit.gb + "   " + m + unit.mb + "   " + k + unit.kb + "   " + b;
        }

        return s;

    }

}
